トランザクション

class TestController < ApplicationController
  def index
    ActiveRecord::Base.transaction do
      company = Company.create(name: 'test')

      raise ActiveRecord::Rollback
    end
  end
end
トランザクションを使用すると
ActiveRecord::Base.transaction do
raise ActiveRecord::Rollback
end

の中のraise ActiveRecord::Rollbackの部分が動作するとデータベースのデータがActiveRecord::Base.transaction doの前の状態に戻ります。

トランザクションは同一のコントローラー内で複数のモデルの操作などを行うときに使用し、例外などの中にraise ActiveRecord::Rollbackを記入しておくことで不都合が起きた時にActiveRecord::Base.transaction do内のすべてのデータベースの変更を取り消すことができます。